package com.uniandes.edu.co.controlador;



import java.util.List;

import com.uniandes.edu.co.anotaciones.LogD;
import com.uniandes.edu.co.anotaciones.LogT;
import com.uniandes.edu.co.anotaciones.LogsD;
import com.uniandes.edu.co.anotaciones.LogsT;
import com.uniandes.edu.co.dto.EtapasDesarrollo;
import com.uniandes.edu.co.dto.Interrupcion;
import com.uniandes.edu.co.excepciones.ExcepcionVacio;
import com.uniandes.edu.co.excepciones.ExcepcionExiste;
import com.uniandes.edu.co.procesar.interrupcion.ProcesarInterrupciones;

/**
 * Clase controladora que se encarga de las validaciones 
 * sobre las interrupciones
 */
public class ControladorInterrupciones {
	/**
	 * instancia unica de la clase
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3, porcentajeRealValorGanado=1)})
	static private ControladorInterrupciones solitario = null;

	/**
	 * metodo que valida que solo este creado una instancia de 
	 * la clase
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3, porcentajeRealValorGanado=1)})
    static public ControladorInterrupciones getSingleton() {
        if (solitario == null) {
            solitario = new ControladorInterrupciones();
        }
        return solitario;
    }
    
    /**
     * metodo encargado de realizar las validaciones cuando
     * se va a agregar una nueva interrupcion
     */
    @LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3,porcentajeRealValorGanado=0),
    		@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=15,porcentajeRealValorGanado=0)})
    @LogsD({@LogD(idCiclo=3, idPersona=20112, etapa=EtapasDesarrollo.INSPECCION, tipo=19)})
    public boolean agregarInterrupcion(String idInterrupcion,String descripcion,List<Interrupcion> listado){
    	if(idInterrupcion.equals("") || descripcion.equals(""))
    	{
    		new ExcepcionVacio("Existen datos vacios");
    		return false;
    	}
    	if(ProcesarInterrupciones.getSingleton().buscarInterrupcion(idInterrupcion, listado)!=null)
    	{
    		 new ExcepcionExiste("La Interrupcion ya existe");
    		 return false;
    	}
    	else
    		return ProcesarInterrupciones.getSingleton().agregarInterrupcion(idInterrupcion, descripcion,listado);
    }
    /**
     * metodo encargado de realizar las validaciones cuando
     * se va a modificar una interrupcion
     */

    @LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3,porcentajeRealValorGanado=0),
    		@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=13,porcentajeRealValorGanado=1)})
    @LogsD({@LogD(idCiclo=3, idPersona=20112, etapa=EtapasDesarrollo.INSPECCION, tipo=19)})
    public boolean modificarInterrupcion(String idInterrupcion,String descripcion,List<Interrupcion> listado)
    {
    	if(idInterrupcion.equals("") || descripcion.equals(""))
    	{
    		new ExcepcionVacio("Existen datos vacios");
    		return false;
    	}
    	else
    	{
    		return ProcesarInterrupciones.getSingleton().modificarInterrupcion(idInterrupcion, descripcion, listado);
    	}
    }

    /**
     * metodo encargado de realizar las validaciones cuando
     * se va a eliminar una interrupcion
     */

    @LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3, porcentajeRealValorGanado=1),
    		@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=2, porcentajeRealValorGanado=1)})
    @LogsD({@LogD(idCiclo=3, idPersona=20112, etapa=EtapasDesarrollo.INSPECCION, tipo=19)})
    public boolean eliminarInterrupcion(String idInterrupcion,List<Interrupcion> listado)
    {
    	if(idInterrupcion.equals(""))
    	{
    		new ExcepcionVacio("Existen datos vacios");
    		return false;
    	}
    	else
    		return ProcesarInterrupciones.getSingleton().eliminarInterrupcion(idInterrupcion, listado);
    }

    /**
     * metodo encargado de realizar las validaciones cuando
     * se va a consultar una interrupcion
     */
    @LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=3, porcentajeRealValorGanado=1)})
    public void consultarInterrupcion(){
    	
    }

}
